package handler

import "fmt"

//UserMgr实例在服务器端有且只有一个
//在很多地方都需要用到，将其定义为全局变量

var (
	userMgr *UserMgr
)

type UserMgr struct {
	OnlineUsers map[string]*UserHandler
}

//完成对UserMgr的初始化工作
func init() {
	userMgr = &UserMgr{
		OnlineUsers: make(map[string]*UserHandler, 1024),
	}
}

//完成对onlineUsers添加
func (this *UserMgr) AddOnlineUser(userHander *UserHandler) {
	this.OnlineUsers[userHander.UserName] = userHander
}

//完成对onlineUsers的删除
func (this *UserMgr) DeleteOnlineUser(userName string) {
	delete(this.OnlineUsers, userName)
}

//返回当前在线的所有用户
func (this *UserMgr) GetAllOnlineUser() map[string]*UserHandler {
	return this.OnlineUsers
}

//点对点聊天会用到
func (this *UserMgr) getOnlineUserByCode(userName string) (userHander *UserHandler, err error) {
	userHander, ok := this.OnlineUsers[userName]
	if !ok {
		//当前用户不在线
		err = fmt.Errorf("在线用户名=%s不存在\n", userName)
		return
	}
	return
}
